gdkwindow: Expose all native windows
authorAlexander Larsson <alexl@redhat.com>
Tue, 7 May 2013 09:46:50 +0000 (11:46 +0200)
committerAlexander Larsson <alexl@redhat.com>
Tue, 7 May 2013 14:40:24 +0000 (16:40 +0200)
We need to send exposes for all native windows, even the ones
without an exposure mask set, because otherwise non-native
children of the native window with an exposure mask will
not be drawn.

gdk/gdkwindow.c

index 7a9b0c3657cbb4e0b84f6183bd5c802c56c14259..a71c0d272f861cb46620c1fc0ab142b35c0a8034 100644 (file)
@@ -3334,7 +3334,13 @@ _gdk_window_process_updates_recurse (GdkWindow *window,
   if (!cairo_region_is_empty (clipped_expose_region) &&
       !window->destroyed)
     {
-      if (window->event_mask & GDK_EXPOSURE_MASK)
+      /* While gtk+ no longer handles exposes on anything but native
+        window we still have to send them to all windows that have the
+        event mask set for backwards compat. We also need to send
+        it to all native windows, even if they don't specify the
+        expose mask, because they may have non-native children that do. */
+      if (gdk_window_has_impl (window) ||
+         window->event_mask & GDK_EXPOSURE_MASK)
        {
          GdkEvent event;